﻿using Loki.UI;

namespace Loki.Engine
{
    /// <summary>
    /// Interface for UI engine.
    /// </summary>
    public interface IUIEngine
    {
        /// <summary>
        /// Loads the UI definitions.
        /// </summary>
        /// <param name="P_UIDefinitions">The p_ UI definitions.</param>
        void LoadUI(params string[] P_UIDefinitions);

        /// <summary>
        /// Gets the specified viewmodel.
        /// </summary>
        /// <typeparam name="TViewModel">The type of the view model type.</typeparam>
        TViewModel GetViewModel<TViewModel>() where TViewModel : IViewModel;

        /// <summary>
        /// Gets the specified viewmodel.
        /// </summary>
        /// <typeparam name="TViewModel">The type of the view model.</typeparam>
        /// <param name="P_ModelID">The model ID.</param>
        TViewModel GetViewModel<TViewModel>(string P_ModelID) where TViewModel : IViewModel;
    }
}
